/******************************************************************
 * @Title: DataUtil.java 
 * @Package com.omni.web.utils 
 * @Description: TODO
 * @author Dellinger
 * @date 2015年4月26日 下午11:04:43 
 * @version v1.0 
 * @copyright Omnikennect.com
 ******************************************************************/
package com.omni.web.utils;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;

/** 
 * @ClassName: DataUtil 
 * @Description: TODO 
 * @author Dellinger
 * @date 2015年4月26日 下午11:04:43 
 *  
 */
public final class DataUtil {

	public static String safeSqlString(String sql) {
		
		if (StringUtils.isBlank(sql))
			return sql;
		else
			return sql.replaceAll("([;])+|(--)+", " ").replaceAll("'", "''");
	}
	
	public static String buildArraySqlWithQuote(String sql, String tag, Object...args) {
		
		if (StringUtils.isBlank(sql))
			return sql;
		else if (ArrayUtils.isEmpty(args))
			return sql;
		else {
			
			String strArr[] = new String[args.length];
			for(int i = 0; i < args.length; i++) {
				if (args[i] == null)
					strArr[i] = "''";
				else
					strArr[i] = String.format("'%s'", safeSqlString((String)args[i]));
			}
			String out = StringUtils.join(strArr, ',');
			return sql.replaceAll(tag, out);
		}
	}
	
	public static String buildArraySql(String sql, String tag, Object...args) {
		
		if (StringUtils.isBlank(sql))
			return sql;
		else if (ArrayUtils.isEmpty(args))
			return sql;
		else {
			String strArr[] = new String[args.length];
			for(int i = 0; i < args.length; i++) {
				if (args[i] == null || StringUtils.isBlank((String)args[i]))
					continue;
				else
					strArr[i] = String.format("%s", safeSqlString((String)args[i]));
			}
			String out = StringUtils.join(strArr, ',');
			return sql.replaceAll(tag, out);
		}
	}
	
	public static String buildSingleSql(String sql, String tag, String arg) {
		
		if (StringUtils.isBlank(sql))
			return sql;
		
		arg = StringUtils.isBlank(arg) ? "" : arg;
		return sql.replace(tag, safeSqlString(arg));
	}
	
	public static String buildSingleSqlWithQuote(String sql, String tag, String arg) {
		
		if (StringUtils.isBlank(sql))
			return sql;
		
		return sql.replace(tag, quoteString(arg));
	}
	
	public static String quoteString(String str) {
		
		if (StringUtils.isBlank(str))
			return "''";
		else
			return String.format("'%s'", safeSqlString(str));
	}
}
